Elasticsearch权限监控

您所在的位置:网站首页 elasticsearch 权限控制 Elasticsearch权限监控

Elasticsearch权限监控

2024-07-11 01:19| 来源: 网络整理| 查看: 265

1、概述 search-guard是Elasticsearch的一个安全权限plugin,特性包括: 权限控制粒度可以到indices,types,甚至可以到过滤field层次。同时也可以限制用户行为CRUD, admin权限等。

search-guard可以实现用户访问es中日志需要登陆授权,不同用户访问不同索引,不授权的索引无法查看,分组控制不同user查看各自的业务。

search-guard插件包含两部分,search-guard-ssl和search-guard-2两个插件。

2、安装 2.1 先安装search-guard-ssl插件。按照以下步骤安装。

2.1.1 切换到elasticsearch/plugins/的目录,命令安装插件:

sudo bin/plugin install com.floragunn/search-guard-ssl/2.3.4.16

注意版本,这里elasticsearch的版本就是2.3.4,它是要跟search-guard的版本进行对应的。克隆search-guard-ssl项目,生成相关证书。克隆项目命令:

sudo git clone https://github.com/floragunncom/search-guard-ssl.git

2.1.2 创建数字证书 一般来说创建数字证书流程如下: (1)创建ROOT CA(根证书/CA认证机构) (2)应用服务器创建CSR(证书签名请求文件),同时会创建好自己的密钥对(公钥和私钥) (3)将CSR发送到CA认证机构 (4)CA机构将返回一个数字签名证书

切换到刚刚克隆的search-guard-ssl的项目目录下,修改etc目录下的配置文件:

example-pki-scripts/etc/root-ca.conf example-pki-scripts/etc/signing-ca.conf

根据自己情况修改相关信息等 ,利用脚本,写入密码,生成根证书。

sudo ./gen_root_ca.sh paswd paswd

search-guard-ssl还提供了以下脚本:

gen_node_cert.sh :可以修改成自己的信息,生成相应服务器证书,里面包含了上述生成数字证书的过程。 gen_client_node_cert.sh :同理生成客户端数字证书。这里记住-dname参数后面的信息,后面认证客户端,就靠这个。

修改完脚本,就可以执行脚本,生成相关证书。 配置ssl。将生成的证书,keystore.jks 和 truststore.jks复制到/etc/elasticsearch/conf目录下,然后增加如下配置到elasticsearch.yml中:

searchguard.ssl.transport.enabled: true searchguard.ssl.transport.keystore_filepath: example-keystore.jks searchguard.ssl.transport.keystore_password: paswd searchguard.ssl.transport.truststore_filepath: truststore.jks searchguard.ssl.transport.truststore_password: paswd searchguard.ssl.transport.enforce_hostname_verification: false searchguard.ssl.transport.resolve_hostname: false //http配置,这里我只是为了测试方便,配置完,应该设置为true searchguard.ssl.http.enabled: false searchguard.ssl.http.keystore_filepath: example-keystore.jks searchguard.ssl.http.keystore_password: paswd searchguard.ssl.http.truststore_filepath: truststore.jks searchguard.ssl.http.truststore_password: paswd searchguard.allow_all_from_loopback: true //这里注意,下面的配置一定要和签的客户端证书一致,否则不能插入配置 searchguard.authcz.admin_dn: - CN=example, OU=client, O=client, L=Test, C=DE

2.2 安装search-guard-2插件 2.2.1 安装插件

sudo bin/plugin install -b com.floragunn/search-guard-2/2.3.4.4

这里同样注意与elasticsearch版本对应。修改配置并插入。切换目录到../elasticsearch/plugins/search-guard-2/ 修改该目录下的sgconfig目下的配置文件。修改用户,角色,角色映射几个配置文件即可。

2.2.2 配置文件介绍 search-guard-2主要有5个配置文件,在 plugins/search-guard-2/sgconfig 下:

(1)sg_config.yml Configure authenticators and authorization backends。主配置文件不需要做改动。 (2)sg_internal_users.yml 本地用户文件,定义用户密码以及对应的权限。例如:对于 ELK 我们需要一个 kibana 登录用户和一个 logstash 用户:

kibana4: hash: $2a$12$xZOcnwYPYQ3zIadnlQIJ0eNhX1ngwMkTN.oMwkKxoGvDVPn4/6XtO #password is: kirk roles: - kibana4 logstash: hash: $2a$12$xZOcnwYPYQ3zIadnlQIJ0eNhX1ngwMkTN.oMwkKxoGvDVPn4/6XtO #password is: kirk roles: - logstash

密码可用plugins/search-guard-2/tools/hash.sh生成。

(3)sg_roles.yml 权限配置文件,这里提供 kibana4 和 logstash 的权限样例。

#: # cluster: # - '' # indices: # '': # '': # - '' # _dls_: '' # _fls_: # - '' # - '' sg_kibana4: cluster: - cluster:monitor/nodes/info - cluster:monitor/health indices: '*': '*': - indices:admin/mappings/fields/get - indices:admin/validate/query - indices:data/read/search - indices:data/read/msearch - indices:admin/get - indices:data/read/field_stats '?kibana': '*': - indices:admin/exists - indices:admin/mapping/put - indices:admin/mappings/fields/get - indices:admin/refresh - indices:admin/validate/query - indices:data/read/get sg_logstash: cluster: - indices:admin/template/get - indices:admin/template/put indices: 'logstash-*': '*': - WRITE - indices:data/write/bulk - indices:data/write/delete - indices:data/write/update - indices:data/read/search - indices:data/read/scroll - CREATE_INDEX

(4)sg_roles_mapping.yml 定义用户的映射关系,添加 kibana 及 logstash 用户对应的映射:

sg_logstash: users: - logstash sg_kibana4: backendroles: - kibana users: - kibana4

(5)sg_action_groups.yml 定义权限

3、启动 (1)到Elasticsearch的bin目录下,重启Elasticsearch。 (2)通过下面命令启动search-guard。

sudo tools/sgadmin.sh -cd sgconfig/ -ks sgconfig/example-keystore.jks -kspass paswd -ts sgconfig/truststore.jks -tspass paswd -nhnv

(3)访问Elasticsearch的页面,用不同的用户登录。

4、Java 客户端访问

//Java客户端访问配置 Settings tsettings = ImmutableSettings .settingsBuilder() .put("searchguard.key_path", "/home/es2/bin") .put("client.transport.sniff", true) .put("searchguard.ssl.transport.node.enabled", true) .put("searchguard.ssl.transport.node.keystore_type", "JKS") .put("searchguard.ssl.transport.node.keystore_password", "kspass") .put("searchguard.ssl.transport.node.keystore_filepath", kf) .put("searchguard.ssl.transport.node.truststore_type", "JKS") .put("searchguard.ssl.transport.node.truststore_password", "tspass") .put("searchguard.ssl.transport.node.truststore_filepath", tf) .build();


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3